package com.yabushan.web.utils.excelUtils;

import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.Cell;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class ImageExcelUtil {

    public static void main(String[] args) {

        FileOutputStream fileOut = null;
        BufferedImage bufferImg;//图片一
        try {
            // 先把读进来的图片放到一个ByteArrayOutputStream中，以便产生ByteArray
            ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
            //将两张图片读到BufferedImage
            bufferImg = ImageIO.read(new File("D:\\upload\\logo.jpg"));
            ImageIO.write(bufferImg, "png", byteArrayOut);






            // 创建一个工作薄
            HSSFWorkbook wb = new HSSFWorkbook();
            //创建一个sheet
            HSSFSheet sheet = wb.createSheet("out put excel");

            HSSFPatriarch patriarch = sheet.createDrawingPatriarch();


            for(int i=0;i<5;i++){
                HSSFRow row = sheet.createRow(i);
                //创建第一行
                row.setHeightInPoints(40);//设置行高
                //创建单元格
                Cell titleCell=row.createCell(0);
                titleCell.setCellValue(i);
                /**
                 * 该构造函数有8个参数
                 * 前四个参数是控制图片在单元格的位置，分别是图片距离单元格left，top，right，bottom的像素距离
                 * 后四个参数，前连个表示图片左上角所在的cellNum和 rowNum，后两个参数对应的表示图片右下角所在的cellNum和 rowNum，
                 * excel中的cellNum和rowNum的index都是从0开始的
                 *
                 */
                int leftTop=i+1;
                int rightLow=i+2;
                //图片一导出到单元格B2中
                HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 0, 0,(short)1,leftTop,(short)2,rightLow);
                // 插入图片
                if(i!=2){
                    patriarch.createPicture(anchor, wb.addPicture(byteArrayOut
                            .toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));

                }

               if(i==2){
                  //  byteArrayOut = new ByteArrayOutputStream();
                   bufferImg = ImageIO.read(new File("D:\\upload\\timg.jpg"));
                   ImageIO.write(bufferImg, "png", byteArrayOut);
                   patriarch.createPicture(anchor, wb.addPicture(byteArrayOut
                           .toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
               }

            }
            fileOut = new FileOutputStream("D:\\upload\\output_Excel.xlsx");
            // 写入excel文件
            wb.write(fileOut);
        } catch (IOException io) {
            io.printStackTrace();
            System.out.println("io erorr : " + io.getMessage());
        } finally {
            if (fileOut != null) {
                try {
                    fileOut.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }





}
